// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// http://code.google.com/p/yam2d/
//
// Copyright (c) 2013 Mikko Romppainen
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in the
// Software without restriction, including without limitation the rights to use, copy,
// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
// and to permit persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies
// or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

#include "PropertySet.h"

#include <stdlib.h>     /* atoi */

namespace yam2d
{

PropertySet::PropertySet() : properties()  
{
}

PropertySet::PropertySet( const PropertySet& o )
{
	*this = o;
}

PropertySet& PropertySet::operator=( const PropertySet& o )
{
	if( this != &o )
	{
		this->properties = o.properties;
	}

	return *this;
}


void PropertySet::setLiteralProperty(const std::string &name, const std::string& value)
{
	properties[name] = value;		
}


void PropertySet::setValues( const std::map< std::string, std::string >& v )
{
	properties.clear();
	properties = v;
}


std::string PropertySet::getLiteralProperty(const std::string &name) const 
{
	// Find the property in the map.
	std::map< std::string, std::string >::const_iterator iter = properties.find(name);

	if (iter == properties.end())
		return std::string("No such property!");

	return iter->second;
}


bool PropertySet::hasProperty(const std::string &name) const
{
	std::map< std::string, std::string >::const_iterator iter = properties.find(name);

	return (iter != properties.end());
}


int PropertySet::getNumericProperty(const std::string &name) const 
{
	return atoi(getLiteralProperty(name).c_str());
}

}



